﻿using Microsoft.AspNetCore.Mvc;

namespace PracticalDemo.Controllers
{
    public class SixController : Controller
    {
        #region 理论
        /// <summary>
        /// 微服务架构
        /// 2012年出现、2014年关注、2015年元年、2020年变成高薪必备
        /// 一解释就懂，一问就不知，一讨论就打架
        /// 
        /// 单体架构Monolithic
        /// UI -> 业务逻辑 -> DB
        /// 1、开发简单，集中管理，没有分布式的损耗
        /// 2、不好维护，升级困难，无法快捷迭代
        /// 业务演进是技术发展的第一推动力
        /// 
        /// 垂直拆分
        /// 垂直拆分，独立部署和维护，分而治之
        /// 拆分越多，存储越复杂，系统间重复的东西也越多
        /// 垂直拆分后，还是单体模式-单体思维
        /// 
        /// 分布式服务
        /// 1、一系列服务组装系统
        /// 2、独立部署，独立运行
        /// 3、独立开发和维护
        /// 4、分布式管理
        /// 5、强调隔离性
        /// 分布式的代价：
        /// 分布式的第一要务就是不要使用分布式
        /// 
        /// 被迫分布式，会出现代价
        /// 分布式技术成熟之后，反过来，在程序架构设计时，分布式就成了可选手段
        /// 
        /// 微服务架构(Microservice Architecture)
        /// 微服务架构是一个用分布式服务拆分业务逻辑，完成解耦的架构模式
        /// 
        /// 就是把以前三层架构里面的BLL给独立成一个服务调用
        /// 以前是一个进程内，调用BLL层的方法
        /// 现在是跨进程，调用服务来完成功能
        /// 
        /// 解耦--可扩展
        /// 
        /// 官方定义
        /// 微服务架构(Microservice Architecture)是一种架构概念，旨在通过将功能分解到
        /// 各个离散的服务中以实现对解决方案的解耦。
        /// 
        /// 概念：把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务，它可扩展单个组件
        /// 而不是整个的应用程序堆栈，从而满足服务等级协议。
        /// 
        /// 定义：围绕业务领域组件来创建应用，这些应用可独立地进行开发、管理和迭代。
        /// 在分散的组件中使用云架构和平台式部署、管理和服务功能，使产品交付变得更加简单。
        /// 
        /// 本质：用一些功能比较明确、业务比较精炼的服务去解决更大、更实际的问题。
        /// 
        /// SOA面向服务架构
        /// Service-Oriented Architecture面向服务架构:是一个组件模型，
        /// 它将应用程序的不同功能单元(称为服务)进行拆分，并通过这些服务之间定义良好的
        /// 接口和协议联系起来
        /// 
        /// SOA VS MicroService
        /// 1、SOA是为了重用，微服务架构是为了重写
        /// 2、SOA更水平，微服务是垂直的
        /// 3、SOA自上而下，微服务自下而上
        /// 相当于 Mediator模式 和 Facade模式 的区别
        ///
        /// 践行微服务架构1-进程通信
        ///     拆分进程，进程间的通信，随着时间推移，有多种模式
        /// 
        ///     进程通信--共享存储
        ///     Redis/DB/Queue/硬盘文件  1、被动式通信  2、门槛低
        ///     
        ///     进程通信--服务通信
        ///     WebService/WCF/WebApi/甚至ashx,aspx
        ///     1、主动触发
        ///     2、数据序列化传递
        ///     3、跨平台
        ///     4、跨语言
        ///     5、http穿透防火墙
        ///     
        ///     进程通信--RPC
        ///     RPC:Remote Procedure Call
        ///     .Net Remoting: .Net平台独有的，不支持跨平台
        ///     gRPC：高性能、开源和通用的RPC框架，面向服务端和移动端，基于HTTP/2设计
        /// 
        /// 践行微服务架构2--服务实例集群
        ///     服务的高可用   服务的可扩展
        ///     服务实例就必须是集群的
        ///     集群(负载均衡)：多台服务器做相同的事情，共同承载压力
        ///     
        ///     Nginx 单纯是负载均衡
        ///     不满足的原因：
        ///     1、需要增加服务实例--需要减少服务实例--这里需要服务注册发现
        ///     2、健康检查--及时发现问题，下线节点
        ///     
        ///     Consul 
        ///     1、负载均衡
        ///     2、服务注册与发现
        ///     3、服务检查
        /// 
        /// 践行微服务架构3--网关Gateway
        ///     客户端该如何访问服务？
        ///     这么多服务地址
        ///     单个服务下线/升级/更新
        ///     Authentication/Authorization
        ///     And so on
        ///     
        ///     Gateway结构图
        ///     提供统一服务入口，让微服务对前台透明
        ///     聚合后台的服务，节省流量，提升性能
        ///     提供安全，过滤，流控等API管理功能
        ///     
        ///     网关Gateway服务治理
        ///     缓存：
        ///     
        ///     熔断：
        ///     单位时间内异常多少次，就指定时间内，网关直接返回失败
        ///     限流：
        ///     单位时间内流量只允许多少次
        ///     降级：
        ///     是指在特殊情况下，可以降低服务等级，甚至关闭
        /// 
        ///     微服务架构2.0
        ///     1、服务实例集群
        ///     2、服务实例治理
        /// 
        /// 践行微服务架构4--鉴权&授权
        ///     Authorization Server   API   Third-Party
        /// 
        /// 践行微服务架构5--瞬态故障处理
        ///     Polly是一种.Net弹性和瞬态故障处理库，允许我们以非常顺畅和线程安全的方式
        ///     来执行重试、断路，超时，故障恢复等策略
        /// 
        /// 践行微服务架构6--分布式追踪Skywalking
        ///     分布式追踪和APM的Server端，他将包含Collector，Storage，独立的Web UI，
        ///     并使用Open Tracing规范来设计追踪数据
        /// 
        /// 践行微服务架构7--Exceptionless
        ///     Exceptionless：开源的日志收集和分析框架，能为应用程序提供实时错误、特性和日志报告。
        /// 
        /// 践行微服务架构8--统一配置中心
        ///     Apollo：配置管理平台，能够集中化管理应用不同环境、不同集群的配置，配置修改后
        ///     能实时推送到应用端，并且具备规范的权限、流程治理等特性
        /// 
        /// 践行微服务架构9--分布式事务
        ///     CAP理论
        /// 
        /// 践行微服务架构10--容器化
        ///     Docker是一个开源的应用容器引擎，可以打包应用以及依赖包到一个可移植的镜像中，
        ///     然后发布到任何流行的Linux或Windows机器上，也可以实现虚拟化
        /// 
        /// 践行微服务架构11--容器编排K8S
        ///     Kubernetes编排容器，是管理应用的全生命周期的工具，从创建应用/部署，
        ///     应用提供服务，扩容缩容，更新，都非常的方便，而且可以做到故障自愈。
        /// 
        /// 践行微服务架构12--CI/CD
        ///     Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具，主要用于持续、
        ///     自动的构建/测试软件项目、监控外部任务的运行。
        /// 
        /// </summary>

        #endregion
        public IActionResult Index()
        {
            return View();
        }
    }
}
